Information Management with Non-Hierarchical Views

ABSTRACT

Information items in a file system are arranged into groups that are created according to a grouping component. A non-hierarchical view displays visual representations (e.g., icons, thumbnail images) of the information items arranged in visually delineated groups according to an arrange type that can be specified for each group. Various view formats are available including icon, list and column view formats. In each view format, a condensed mode can be selected for one or more groups, resulting in multiple visual representations of items being displayed in a fixed amount of screen space in the non-hierarchical view. In icon view, each condensed group includes a single row of visual representations that can be navigated separately from other groups in the non-hierarchical view.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims priority to U.S. Provisional Application No.61/433,195, filed on Jan. 14, 2011, entitled “Information Managementwith Non-Hierarchical Views,” the entire contents of which areincorporated herein by reference.

TECHNICAL FIELD

This disclosure relates generally to user interfaces for managinginformation on a computing device.

BACKGROUND

Modern computing devices often include a file system that storesinformation items in various directories or subdirectories (e.g.,folders) in a file system hierarchy. Each information item (e.g., a fileor a folder) can be given a respective filename. An information item'sfilename and its file path in the file system hierarchy can be used touniquely identify the item in the file system. Each folder can includemultiple files and subfolders. Modern computing devices also providegraphical user interfaces (GUIs) or “views” to help the user navigateand manipulate the file system hierarchy and the items stored therein.

SUMMARY

Information items in a file system are arranged in groups that arecreated according to a grouping component. A non-hierarchical viewdisplays visual representations of the information items arranged invisually delineated groups that can be navigated by a user orapplication. The visual representations in each visually delineatedgroup can be arranged according to a specified arrange type. Variousview formats are available including icon, list and column view formats.In each view format, a condensed mode can be selected for one or moregroups, resulting in multiple visual representations of items beingdisplayed in a fixed amount of screen space in the non-hierarchicalview. In icon view, each condensed group includes a single row of visualrepresentations that can be navigated separately from other groups inthe non-hierarchical view. The groups can also be navigated in thenon-hierarchical view. In list and column view, each condensed group canbe limited to a fixed number of rows for displaying visualrepresentations of items with the group. The maximum number of rowsallowed for representing a condensed group in list view can be adaptive,and can expand or contract as the window is resized.

The grouping component can be specified through an input mechanism(e.g., a pull down menu) or by an application. The grouping componentdetermines the groups that are available in the non-hierarchical view.Depending on the grouping component selected, a non-hierarchical viewcan include groups based on file type, file size, date, association withan application program, labels or any other attribute. For example, afile type attribute results in the display of separate visuallydelineated groups displaying visual representations of text documents,audio files, web pages, digital images, videos, etc.

In some implementations, the non-hierarchical view can be resized.During the resizing, visual representations no longer in thenon-hierarchical view due to the view contracting can be stacked on topof overflow icons located on either end of the row of visualrepresentations. Similarly, visual representations that come into thenon-hierarchical view due to the view expanding can be laid out in therow one by one. This resizing feature allows a currently selected iconto remain in the non-hierarchical view during and after the resizing.

In some implementations, file systems including user-orientedinformation items can be searched by a search engine using a query thatincludes and excludes file paths so that only user-oriented informationitems are return in a search result. Search filters can be used removenon user-oriented files. The queries can be initiated by group logic andupdated as information items are added, deleted or modified in the filesystem so that the non-hierarchical view is current.

Particular implementations of information management usingnon-hierarchical views provide one or more of the following advantages.Non-hierarchical views displaying visually delineated groups of visualrepresentations corresponding to user-oriented information items providebetter visual feedback for user interaction with a computer file system.Such non-hierarchical views also allow more efficient or faster search,retrieval or evaluation of user-oriented information items.

The details of one or more disclosed implementations are set forth inthe accompanying drawings and the description below. Other features,aspects, and advantages will become apparent from the description, thedrawings and the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1A illustrates an exemplary non-hierarchical, icon view of visualrepresentations of user-oriented information items on a computer systemdisplay.

FIG. 1B is the non-hierarchical view of FIG. 1A illustrating theselection of a grouping component.

FIG. 1C is the non-hierarchical view of FIG. 1A illustrating theselection of an arrange type.

FIG. 1D is the non-hierarchical view of FIG. 1A illustrating expandedand condensed views of groups.

FIG. 1E is the non-hierarchical view of FIG. 1A illustrating therepositioning of visual representations in a group in response toresizing of the non-hierarchical view.

FIG. 2 illustrates an exemplary non-hierarchical, list view of visualrepresentations of user-oriented information items on a computer systemdisplay.

FIG. 3 illustrates an exemplary non-hierarchical, column view of visualrepresentations of user-oriented information items on a computer systemdisplay.

FIG. 4 illustrates exemplary software architecture for implementing anon-hierarchical view of visual representations of user-orientedinformation items.

FIG. 5 is a flow diagram of an exemplary process for creating anon-hierarchical view of visual representations of user-orientedinformation items.

FIG. 6 is a flow diagram of an exemplary process for the repositioningof a group of visual representations in response to resizing of anon-hierarchical view.

FIGS. 7A and 7B are flow diagrams of exemplary processes for navigatinga group of visual representations in a non-hierarchical view.

FIG. 8 is a block diagram of exemplary hardware architecture forimplementing the features and processes described in reference to FIGS.1-7.

FIG. 9 illustrates an exemplary non-hierarchical, dock stack view ofvisual representations of user-oriented information items on a computersystem display.

Like reference symbols in the various drawings indicate like elements.

DETAILED DESCRIPTION Exemplary Non-Hierarchical Views

FIG. 1A illustrates an exemplary non-hierarchical, icon view of visualrepresentations of user-oriented information items on a computer systemdisplay. In some implementations, user interface 100 can include sidebar102, non-hierarchical view 103, view selector 106, attribute selector108, arrange type selector 110 and condense view button 118.

User interface 100 can be displayed by any device capable of displayinginformation, including but not limited to: desktop or portable computersystems, mobile phones, electronic tablets, digital media devices,television systems, set-top boxes, digital cameras, video cameras, etc.User interface 100 can be navigated by a screen cursor manipulated by aninput device (e.g., mouse, keyboard, trackball, track/touch pad). Userinterface 100 can also be presented on a touch sensitive displayresponsive to touch or gesture input made by one or more fingers, astylus, light pen or other pointing device.

A used herein, the term “user-oriented” means any information item thatis associated with a particular user, as opposed to an operating systemfile or application program file. An example of a “user-oriented”information item is a user generated document created on a text editoror digital photos or videos created by the user. As used herein, theterm “information item” means any document, file or data that containinformation, including but not limited to: text documents, digitalphotos or videos, files and web pages (HTML files). As used herein, theterm “non-hierarchical view” means a file system view without levels ofsubdivision as opposed to traditional file system views that displayfiles in subdivided levels or a tree view format of directories, foldersand subfolders.

In some implementations, sidebar 102 includes container object 104. Whencontainer object 104 is selected, non-hierarchical view 103 is displayedin user interface 100. Non-hierarchical view 103 includes a number ofvisually delineated groups containing visual representations 107 (e.g.,icons, thumbnail images) corresponding to user-oriented informationitems. Visual representations 107 are displayed in groups according to aspecified grouping component.

In the example shown, an icon view format is selected on view selector106 as indicated by the shading. In icon view, visual representations107 are displayed in visually delineated groups 112 (e.g., delineated bylines, shadows, reflections, colors, etc.). Visual representations 107in each group are displayed in a single row that can be navigated by auser. Groups 112 are identified by group headers 116. The display orderof the groups can be changed manually by dragging a group header up ordown non-hierarchical view 103.

Each group 112 a-12 c in non-hierarchical view 103 is created based onthe grouping component, which determines the number of groups 112 to bedisplayed in non-hierarchical view 103. Some examples of groupingcomponents include but are not limited to: Kind, Size, Date, Apps andLabel. In the example shown, the Kind grouping component is currentlyselected using, for example, attribute selector 108. The Kind attributecauses one or more groups to be displayed for each type of informationitem. Types of information items can include but are not limited to:text documents, digital images, audio files, video files, documents inportable document format (.pdf), spreadsheets, presentations and webpages.

In FIG. 1A, group 112 a includes visual representations 107 of textdocuments, group 112 b includes visual representations 107 of digitalimages and group 112 c includes visual representations 107 of videofiles. Although three groups 112 a-112 c are shown in view 103, view 103can include any number of groups depending on the grouping componentselected.

If view 103 is displayed on a touch sensitive display or if a touch pador surface is available, additional groups can be navigated to byvertically scrolling view 103 using a swiping gesture, for example. Ifview 103 is not presented on a touch sensitive display and a touch pador surface is not available, then a user interface element (e.g., avertical scroll bar) can be used to display additional groups.

In addition to vertical scrolling, each group of visual representations107 can be horizontally scrolled independent of other groups. Forexample, using a touch sensitive display or pad a user can make aswiping gesture within a group in the left or right direction to displayadditional icons in that group. If a touch sensitive display or pad isnot available, overflow icons 114 displayed on opposite ends of the rowcan be selected by a screen cursor to display additional icons in thegroup in the row. The overflow icons can be displayed in athree-dimensional perspective with depth and slightly rotated, such asoverflow icons 910 a, 910 b and 910 c shown in FIG. 9.

FIG. 1B is the non-hierarchical view of FIG. 1A illustrating theselection of grouping components. In some implementations, a groupingcomponent can be selected using attribute selector 108 in user interface100. Upon selection of attribute selector 108, a menu of groupingcomponent options is displayed which can be selected by a user. Someexamples of grouping components can include but are not limited to:Kind, Size, Date, Apps and Label. As previously stated, the Kindattribute creates one or more groups based on types of informationitems.

Additionally, a user can select a Size grouping component which resultsin the display of groups based on file size. For example, groups can becreated based on fixed cluster sizes (e.g., 0-100 MB cluster) or by acluster size specified by a user or by analysis of the files.

A user can select the Data grouping component to create one or moregroups based on time, such as groups for information items that werecreated, modified or last opened on the current day, the past week, thepast month or any other desired time range.

A user can select the Apps (Applications) grouping component to creategroups based on application programs that view or edit informationitems. For example, groups can be created for preview files that areassociated with a preview application for viewing file contents, webpages that are associated with a web browser, text documents that areassociated with a text editor or word processing application, and so on.

A user can select a Label grouping component to create groups based onlabels or other metadata. Labels can be the names of files or some otherfile metadata specified by a user. In some implementations, selectingthe Label attribute from attribute selector 108 causes a Label editor(not shown) to open in user interface 100. The Label editor allows auser to specify a label for a file. In some implementations, the editordisplays color picker to allow the user to assign a color as a label.When the Label attribute is selected, non-hierarchical view 103 willdisplay group headers 116 in the specified color. Visual representations107 corresponding to labeled information items are displayed in groupsaccording to color.

In some implementations, a user can drag and drop a visualrepresentation from one group to another group and the information itemcorresponding to the visual representation will have its label updatedto the color of the group where the visual representation is dropped.For example, when dragging a visual representation over a group view,the drag can be validated according to a predefined order. For example,if the drag is over a visual representation and the visualrepresentation would accept the drop, the visual representation ishighlighted and validation is complete. If the drag is over thebackground of a group, or over a visual representation that does notaccept the drag, and if the group the visual representation is beingdragged onto accepts the drop, the group is highlighted and validationis complete. If no visual representation or group would accept the drop,but the target of the view would accept the drop, the entire view ishighlighted.

When dragging a visual representation from one group to another, thegroup can indicate that it would accept a drop of the visualrepresentation if the group corresponds directly to a writableattribute. For example, if a container is visited in group view in“group by label” mode, each group can represent a label value andbecause label values are writable, dragging a visual representation fromthe “blue” label group, the “red” label group can be interpreted to meanthat the dropped visual representation should get its label set to red.For other grouping modes, although the group may correspond to agrouping component, it may not make sense for it to be writable (e.g.,when grouping by size). Each group manager (See FIG. 4) can implementthe validation of drops for its corresponding group.

FIG. 1C is the non-hierarchical view of FIG. 1A illustrating theselection of an arrange type. In addition to organizing visualrepresentations by grouping components, visual representations can alsobe arranged in a group by sort order or arrange type. In someimplementations, an arrange type selector 110 can be used to specifyarrange type in a pull down menu. Some examples of arrange types caninclude but are not limited to: alphanumeric (e.g., file name, label,kind, version, comment), date (e.g., date created, data modified, datelast opened) and numeric (e.g., size, dimensions, resolution). Thesubsort options available through selector 110 can be changed based onthe grouping component selected. Thus, the visual representations 107 ineach group can be arranged independent of the arrangement specified forother groups in view 103. In some implementations, the user is providedwith a discoverable mechanism (e.g., a pop-up menu) for setting thegroupings, and to provide the user with appropriate default arrangementsfor each grouping mode. An additional mechanism (e.g., a second pop-upmenu) can be made available to users to set the groups arrangement ofvisual representations as needed.

FIG. 1D is the non-hierarchical view of FIG. 1A illustrating a condensedview of a group. In some implementations, a user can specify a condenseview option in user interface 100. The condense view option can beselected using, for example, condense view button 118. Upon selection ofthe condense view button 118, the group 112 that is currently in focus(e.g., the user has selected a visual representation in the group) willbe displayed in a fixed amount of screen space in non-hierarchical view103. In the example shown, visual representation 119 is selected makinggroup 112 a the active group. When condense view button 118 is selected,visual representations 107 in group 112 a are displayed in multiple rows(e.g., a grid view) in a fixed amount of screen space innon-hierarchical view 103. Selecting condense view button 118 again willresult in the visual representations in group 112 a reverting back to asingle row display format. Each group 112 can be independently condensedwithout affecting the display format of the other groups in view 103.

Although FIG. 1D shows an icon view, condensed mode can be used for anydisplay format. Selecting condense view button 18 in any view (e.g.,icon, list, column) will limit the amount of screen space used torepresent the group regardless of the number of items within the group.This allows multiple groups to be displayed in a limited amount ofscreen resolution without scrolling through all visual representationsin each group.

In icon view, when a group is condensed it will show a single row ofvisual representations of items that stack at the edge if there is notenough screen space to display all the visual representations at once.In the condensed mode, the single row of icons can be navigated byscrolling. When the condensed icon group is expanded, the visualrepresentations are laid out in a two-dimensional grid from left edge toright edge, row by row, as shown in FIG. 1D. The expanded state can pushfollowing groups (e.g., groups 2 and 3 in FIG. 1D) off screen, thusrequiring the use of scrolling to view the other groups.

For list and column views (FIGS. 2 and 3), condensed mode can limit thenumber of rows per group to a reasonable number to allow multiple groupsto be visible in a typical window. For example, a typical window may belarge enough to represent 50 total rows in a list view. When showing alist or column view in condensed mode, each condensed group may belimited to showing a maximum of 10 rows at a time. If there were 5groups, all the groups would be visible and the user would see some ofthe visual representations of items from each group, and can expand thegroup to see all of the visual representations of items within thegroup.

In some implementations, list and column views can exhibit an additionalbehavior. Because computers are used with displays with varying sizesand resolutions, there may be many different sizes of windows in use.The condensed mode for list and column views can limit each group to aconstant maximum number of rows. However, if additional space isavailable after limiting each group to a constant number of rows, thenit may be wasteful to leave the additional space empty. As such,condensed mode layout logic for list and column view adapts, expandingthe maximum number of rows per group until all visual representations ofitems in the group are visible, or until all available space in thewindow is used without resorting to scrolling. In this way, a user canexpand the window, and previously hidden rows will be added to eachgroup to take advantage of the newly available space. Likewise, if thewindow is contracted and all groups are in a condensed state, the numberof rows allowable per group can be reduced as the window contracts untila minimum number of rows per group are reached.

FIG. 1E is the non-hierarchical view of FIG. 1A illustratingrepositioning of visual representations in a group in response toresizing of the non-hierarchical view. In some implementations, visualrepresentations will be repositioned in a group to maintain a selectedvisual representation in view when view 103 is resized by a user orapplication.

In the example shown, a screen cursor 124 is used to resizenon-hierarchical view 103 from the right side, causing view 103 tocontract in size. Visual representation 122 in group 112 b is currentlyselected. To maintain visual representation 122 in non-hierarchical view103 during and after resizing, a visual representation that fallsoutside the view 103 due to its contraction is animated to stack ontooverflow icon 114 d. The stacking can occur during the resizing. Bystacking visual representations onto overflow icon 114 d, selectedvisual representation 122 remains in view 103. This same stackinganimation also occurs in other groups that are not in condensed view,such as group 112 c. Similarly, if view 103 expands due to resizing, thevisual representation at the top of the stack is animated to be laid outin the group row, similar to dulling out a stack of playing cards.

FIG. 2 illustrates an exemplary non-hierarchical, list view of visualrepresentations of user-oriented information items on a computer systemdisplay. In some implementations, a list view can be selected using viewselector 106. In list view, visual representations in each group arelaid out in their own rows, creating a list of visual representationsfor each group. Each group list can be vertically scrolled to displayadditional visual representations in the list. Other information canalso be displayed with the visual representations, such as a datemodified field and size field. In list view, each group can be condensedsuch that the group is limited to a fixed number of rows for displayingvisual representations of items. The maximum number of rows allowed forrepresenting a condensed group in list view can be adaptive, and canexpand or contract as the window is resized.

FIG. 3 illustrates an exemplary non-hierarchical, column view of visualrepresentations of user-oriented information items on a computer systemdisplay. In some implementations, a column view can be selected usingview selector 106. In column view, visual representations in each groupcan be laid out in a first column. A second column can display a previewand other information about a selected information item. In the exampleshown, My File 1 is selected from group 112 a, causing a preview andbasic information for My File 1 to be displayed in the adjacent columnin view 103. Each group 112 in the first column can be verticallyscrolled to display additional visual representations. In column view,each group can be condensed such that the group is limited to a fixednumber of rows for displaying visual representations of items.

Exemplary Software Architecture

FIG. 4 illustrates exemplary software architecture 400 for implementinga non-hierarchical view of visual representations of user-orientedinformation items. In some implementations, software architecture 400can include views layer 412, group logic layer 410, search engine 408,file system 404, virtual file system 406 (e.g., files accessible througha network) and operating system kernel 402. Group logic layer 410 caninclude a number of group managers, including a group manager for eachof grouping component: Kind 414, Size 416, Label 418, Apps 420 and Date422.

In some implementations, when a computer system hosting file systems404, 406 is first turned on or otherwise activated, group logic 410automatically issues a query to search engine 408 to start a search foruser-oriented files stored in file systems 404, 406. In this manner, theuser can get near instant results when non-hierarchical view 103 isinvoked for the first time. An example search engine 408 is described inU.S. Pat. No. 6,487,959 assigned to Apple Inc. of Cupertino, Calif.

The query can include file paths to be included and excluded in thesearch. A set of search filters can be used by search engine 408 toexclude certain information items from the search results. For example,information items that are not user-oriented can be filtered out of thesearch results. The query can be a “live” query in which search resultsresponsive to the query are continuously updated by search engine 408 asinformation items in the search results are added, deleted, modified oraccessed by file systems 404, 406.

The search results (list of user-oriented information items) arereturned to group logic 410 where the user-oriented files are processedby group managers 414, 416, 418, 420, 422, depending on which groupingcomponent is selected through attribute selector 108. The group managersorganize the search results into arranged groups. These arranged groupsprovide the item information to Views layer 412. Views layer 412 caninclude various graphical user interface methods for displayingnon-hierarchical views, as described in reference to FIGS. 1-3. Viewslayer 412 can also handle the various features associated with views,including processing user inputs.

Exemplary Processes

FIG. 5 is a flow diagram of an exemplary process 500 for creating anon-hierarchical view of visual representations of user-orientedinformation items. Process 500 can be implemented by softwarearchitecture 400 implemented on device architecture 800, as described inreference to FIGS. 4 and 8.

In some implementations, process 500 can begin by searching one or morefile systems of computing device for user-oriented information items(502). For example, group logic can issue a query to a search engine tosearch for all user-oriented files in the file systems available to thecomputing device. The query can include and exclude certain file paths.Search filters can be applied to the search results to exclude nonuser-oriented files. For example, operating system or application filesmay be excluded.

Process 500 receives user-oriented information items in response to thequery (504). The information items found by the search engine are passedback to the group logic which assigns the information items to one ormore groups (506) based on a selected grouping component, as describedin reference to FIG. 4. Process 500 then arranges groups in orderaccording to arrange type for each group (508).

Next, process 500 displays a non-hierarchical view of visualrepresentations of information items arranged in the groups (510).Non-hierarchical views can have a variety of display formats (e.g., iconview, list view, column view) with different behaviors as described inreference to FIGS. 1-3.

FIG. 6 is a flow diagram of an exemplary process 600 for therepositioning a group of visual representations in response to resizinga non-hierarchical view. Process 600 can be implemented by softwarearchitecture 400 implemented on device architecture 800, as described inreference to FIGS. 4 and 8.

In some implementations, process 600 can begin by displaying anon-hierarchical view of visual representations of user-orientedinformation items arranged in groups created according to a groupingcomponent (602). The grouping component can be specified by a user. Someexamples of grouping components include but are not limited to: Kind,Size, Data, Apps and Label.

Process 600 receives first input selecting a visual representation in agroup displayed in the non-hierarchical view (604). The first input canbe touch input or input provided by an input device, such as a mouse orkeyboard.

Process 600 receives second input for resizing the non-hierarchical view(606). The second input can be touch input or input provided by an inputdevice, such as a keyboard or mouse. The resizing can make thenon-hierarchical view expand or contract.

Process 600 resizes the non-hierarchical view, including repositioningnon-selected visual representations in a row to maintain the selectedvisual representations in the non-hierarchical view (608). When anon-hierarchical view is contracting, reposition can include stackingvisual representations that are no longer in view onto one of twooverflow icons located at opposite ends of the row as the view iscontracting. When the non-hierarchical view is expanding, reposition caninclude removing visual representations off the stack one by one andlaying the visual representations in the group row as the view isexpanding.

FIG. 7A is a flow diagram of an exemplary process 700 for navigating agroup of visual representations in a non-hierarchical view. Process 700can be implemented by software architecture 400 implemented on devicearchitecture 800, as described in reference to FIGS. 4 and 8.

In some implementations, process 700 can begin by displaying anon-hierarchical view of visual representations of user-orientedinformation items in groups created according to a grouping component(702). Process 700 receives input initiating navigation of visualrepresentations in a group in the non-hierarchical view (704). Forexample, a user can use a swipe gesture in a row to display additionalvisual representations for information items in the group. Process 700navigates the visual representations in the group independent of othergroups in the non-hierarchical view (706).

FIG. 7B is a flow diagram of an exemplary process 708 for navigating agroup of visual representations in a non-hierarchical view. Process 708can be implemented by software architecture 400 implemented on devicearchitecture 800, as described in reference to FIGS. 4 and 8.

In some implementations, process 708 can begin by displaying anon-hierarchical view of visual representations of user-orientedinformation items in groups created according to a grouping component(710). Process 708 receives input initiating display of additionalvisual representations in the group (712). For example, a user can clickor touch an overflow icon located on either end of the group row toinitiate display of additional visual representations, as described inreference to FIG. 1A. In another example, the user can specify acondense view that results in additional visual representations beingdisplayed in multiple rows in a fixed amount of screen space in thenon-hierarchical view. Responsive to the input, process 708 displaysadditional visual representations in the group row independent of othergroups in the non-hierarchical view (714).

Exemplary Device Architecture

FIG. 8 is a block diagram of exemplary device architecture forimplementing the features and processes described in reference to FIGS.1-7. The device architecture can include memory interface 802, one ormore data processors, image processors and/or processors 804, andperipherals interface 806. Memory interface 802, one or more processors804 and/or peripherals interface 806 can be separate components or canbe integrated in one or more integrated circuits. The various componentsin the device, for example, can be coupled by one or more communicationbuses or signal lines. The device architecture can be implemented in anydevice capable of displaying information items, including but notlimited to desktop and mobile computers, smart phones, email devices,electronic tablets, digital media devices, television systems, set-topboxes, digital cameras, personal digital assistants (PDAs), etc.

Sensors, devices, and subsystems can be coupled to peripherals interface806 to facilitate multiple functionalities. For example, motion sensor810, light sensor 812, and proximity sensor 814 can be coupled toperipherals interface 806 to facilitate orientation, lighting, andproximity functions of the mobile device. Location processor 815 (e.g.,GPS receiver) can be connected to peripherals interface 806 to providegeopositioning. Electronic magnetometer 816 (e.g., an integrated circuitchip) can also be connected to peripherals interface 806 to provide datathat can be used to determine the direction of magnetic North. Thus,electronic magnetometer 816 can be used as an electronic compass.Accelerometer 817 can also be connected to peripherals interface 806 toprovide data that can be used to determine change of speed and directionof movement of the mobile device.

Camera subsystem 820 and an optical sensor 822, e.g., a charged coupleddevice (CCD) or a complementary metal-oxide semiconductor (CMOS) opticalsensor, can be utilized to facilitate camera functions, such asrecording photographs and video clips.

Communication functions can be facilitated through one or more wirelesscommunication subsystems 824, which can include radio frequencyreceivers and transmitters and/or optical (e.g., infrared) receivers andtransmitters. The specific design and implementation of thecommunication subsystem 824 can depend on the communication network(s)over which a device is intended to operate. For example, a mobile devicecan include communication subsystems 824 designed to operate over a GSMnetwork, a GPRS network, an EDGE network, a WiFi or WiMax network, and aBluetooth network. In particular, the wireless communication subsystems824 can include hosting protocols such that the mobile device can beconfigured as a base station for other wireless devices.

Audio subsystem 826 can be coupled to a speaker 828 and a microphone 830to facilitate voice-enabled functions, such as voice recognition, voicereplication, digital recording, and telephony functions.

I/O subsystem 840 can include touch screen controller 842 and/or otherinput controller(s) 844. Touch controller 842 can be coupled to a touchscreen/pad 846. Touch screen/pad 846 and touch controller 842 can, forexample, detect contact and movement or break thereof using any of aplurality of touch sensitivity technologies, including but not limitedto capacitive, resistive, infrared, and surface acoustic wavetechnologies, as well as other proximity sensor arrays or other elementsfor determining one or more points of contact with touch screen/pad 846.

Other input controller(s) 844 can be coupled to other input/controldevices 848, such as one or more buttons, rocker switches, thumb-wheel,infrared port, USB port, and/or a pointer device such as a stylus. Theone or more buttons (not shown) can include an up/down button for volumecontrol of speaker 828 and/or microphone 830. The touch screen 846 can,for example, also be used to implement virtual or soft buttons and/or akeyboard.

In some implementations, device architecture can present recorded audioand/or video files, such as MP3, AAC, and MPEG files. In someimplementations, the device architecture can include the functionalityof an MP3 player, such as an iPod™. The device may, therefore, include apin connector that is compatible with the iPod. Other input/output andcontrol devices can be used.

Memory interface 802 can be coupled to memory 850. Memory 850 caninclude high-speed random access memory and/or non-volatile memory, suchas one or more magnetic disk storage devices, one or more opticalstorage devices, and/or flash memory (e.g., NAND, NOR). Memory 850 canstore operating system 852, such as Darwin, RTXC, LINUX, UNIX, OS X,WINDOWS, or an embedded operating system such as VxWorks. Operatingsystem 852 may include instructions for handling basic system servicesand for performing hardware dependent tasks. In some implementations,operating system 852 can include a kernel (e.g., UNIX kernel).

Memory 850 may also store communication instructions 854 to facilitatecommunicating with one or more additional devices, one or more computersand/or one or more servers. Memory 850 may include graphical userinterface instructions 856 to facilitate graphic user interfaceprocessing, such as the user interfaces illustrated in FIGS. 1A-1E;sensor processing instructions 858 to facilitate sensor-relatedprocessing and functions; phone instructions 860 to facilitatephone-related processes and functions; electronic messaging instructions862 to facilitate electronic-messaging related processes and functions,such as SMS and MMS; search engine instructions 864 to facilitate searchrequests on local and virtual file systems on (or coupled to) thedevice; media processing instructions 866 to facilitate mediaprocessing-related processes and functions; GPS/Navigation instructions868 to facilitate GPS and navigation-related processes and instructions;and camera instructions 870 to facilitate camera-related processes andfunctions. The memory 850 may also store other software instructions(not shown), such as security instructions, web video instructions tofacilitate web video-related processes and functions, and/or webshopping instructions to facilitate web shopping-related processes andfunctions.

Memory 850 can include group logic instructions 872 for assigninginformation items to groups and updating the group assignments throughsearch queries. Memory 850 can also include file system instructions 874for implementing local and virtual file systems (e.g., for accessingfiles on a network) on the device.

Each of the above identified instructions and applications cancorrespond to a set of instructions for performing one or more functionsdescribed above. These instructions need not be implemented as separatesoftware programs, procedures, or modules. Memory 850 can includeadditional instructions or fewer instructions. Furthermore, variousfunctions of the device architecture may be implemented in hardwareand/or in software, including in one or more signal processing and/orapplication specific integrated circuits.

FIG. 9 illustrates an exemplary non-hierarchical, dock stack view ofvisual representations of user-oriented information items on a computersystem display. In some implementations, a dock stack view of groups canbe displayed. In the example shown, desktop 900 includes dock 904 fordisplaying visual representations of applications or other items.Included on dock 804 is mechanism 902 for displaying group view 906.Group view 906 includes groups 908 a, 908 b and 908 c, including visualrepresentations for music, movies and presentations, respectively. Eachgroup includes overflow icons 910 a, 910 b and 910 c, which can beselected separately to display additional icons. In the example shown,overflow icons 910 a, 910 b and 910 c can be displayed in a perspectiveview with depth and slightly rotated out of the screen as shown in FIG.9.

The described features can be implemented advantageously in one or morecomputer programs that are executable on a programmable system includingat least one programmable processor coupled to receive data andinstructions from, and to transmit data and instructions to, a datastorage system, at least one input device, and at least one outputdevice. A computer program is a set of instructions that can be used,directly or indirectly, in a computer to perform a certain activity orbring about a certain result. A computer program can be written in anyform of programming language (e.g., Objective-C, Java), includingcompiled or interpreted languages, and it can be deployed in any form,including as a stand-alone program or as a module, component,subroutine, or other unit suitable for use in a computing environment.

Suitable processors for the execution of a program of instructionsinclude, by way of example, both general and special purposemicroprocessors, and the sole processor or one of multiple processors orcores, of any kind of computer. Generally, a processor will receiveinstructions and data from a read-only memory or a random access memoryor both. The essential elements of a computer are a processor forexecuting instructions and one or more memories for storing instructionsand data. Generally, a computer will also include, or be operativelycoupled to communicate with, one or more mass storage devices forstoring data files; such devices include magnetic disks, such asinternal hard disks and removable disks; magneto-optical disks; andoptical disks. Storage devices suitable for tangibly embodying computerprogram instructions and data include all forms of non-volatile memory,including by way of example semiconductor memory devices, such as EPROM,EEPROM, and flash memory devices; magnetic disks such as internal harddisks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROMdisks. The processor and the memory can be supplemented by, orincorporated in, ASICs (application-specific integrated circuits).

To provide for interaction with a user, the features can be implementedon a computer having a display device such as a CRT (cathode ray tube)or LCD (liquid crystal display) monitor for displaying information tothe user and a keyboard and a pointing device such as a mouse or atrackball by which the user can provide input to the computer.

The features can be implemented in a computer system that includes aback-end component, such as a data server, or a middleware component,such as an application server or an Internet server, or that includes afront-end component, such as a client computer having a graphical userinterface or an Internet browser, or any combination of them. Thecomponents of the system can be connected by any form or medium ofdigital data communication such as a communication network. Examples ofcommunication networks include, e.g., a LAN, a WAN, and the computersand networks forming the Internet.

The computer system can include clients and servers. A client and serverare generally remote from each other and typically interact through anetwork. The relationship of client and server arises by virtue ofcomputer programs running on the respective computers and having aclient-server relationship to each other.

One or more features or steps of the disclosed embodiments can beimplemented using an API. An API can define on or more parameters thatare passed between a calling application and other software code (e.g.,an operating system, library routine, function) that provides a service,that provides data, or that performs an operation or a computation.

The API can be implemented as one or more calls in program code thatsend or receive one or more parameters through a parameter list or otherstructure based on a call convention defined in an API specificationdocument. A parameter can be a constant, a key, a data structure, anobject, an object class, a variable, a data type, a pointer, an array, alist, or another call. API calls and parameters can be implemented inany programming language. The programming language can define thevocabulary and calling convention that a programmer will employ toaccess functions supporting the API.

In some implementations, an API call can report to an application thecapabilities of a device running the application, such as inputcapability, output capability, processing capability, power capability,communications capability, etc.

A number of implementations have been described. Nevertheless, it willbe understood that various modifications may be made. For example,elements of one or more implementations may be combined, deleted,modified, or supplemented to form further implementations. Yet anotherexample, the logic flows depicted in the figures do not require theparticular order shown, or sequential order, to achieve desirableresults. In addition, other steps may be provided, or steps may beeliminated, from the described flows, and other components may be addedto, or removed from, the described systems. Accordingly, otherimplementations are within the scope of the following claims.

1. A method comprising: searching a computer file system of a device foruser-oriented information items; receiving a list of user-orientedinformation items in response to the searching; assigning theuser-oriented information items to groups based on a grouping component;arranging groups in order according to arrange type; and causing anon-hierarchical view to be presented on a display of the device, theview including visual representations of corresponding user-orientedinformation items, the visual representations arranged in the groups inthe view, where the method is performed by one or more computerprocessors.
 2. The method of claim 1, where searching a computer filesystem of a device for user-oriented information items furthercomprises: submitting a query to a search engine that includes andexcludes file paths to be searched.
 3. The method of claim 1, wheresearching a computer file system of a device for user-orientedinformation items further comprises: filtering search results based onfilter criteria to exclude files that are not user-oriented.
 4. Themethod of claim 1, where the search engine provides periodic updates tothe query when a status of an information item in the search results haschanged.
 5. A system comprising: one or more processors; memory storinginstructions, which, when executed by the one or more processors, causesthe one or more processors to perform operations comprising: searching acomputer file system of a device for user-oriented information items;receiving a list of user-oriented information items in response to thesearching; assigning the user-oriented information items to groups basedon a grouping component; arranging groups in order according to arrangetype; and causing a non-hierarchical view to be presented on a displayof the device, the view including visual representations ofcorresponding user-oriented information items, the visualrepresentations arranged in the groups in the view.
 6. The system ofclaim 5, where searching a computer file system of a device foruser-oriented information items further comprises: submitting a query toa search engine that includes and excludes file paths to be searched. 7.The system of claim 5, where searching a computer file system of adevice for user-oriented information items further comprises: filteringsearch results based on filter criteria to exclude files that are notuser-oriented.
 8. The system of claim 5, where the search engineprovides periodic updates to the query when a status of an informationitem in the search results has changed.